package org.example.brave.http;

import brave.Span;

/** @deprecated Since 5.10, use {@link HttpServerRequest} and {@link HttpServerResponse} */
@Deprecated public abstract class HttpServerAdapter<Req, Resp> extends HttpAdapter<Req, Resp> {
    /**
     * @deprecated {@link #parseClientIpAndPort} addresses this functionality. This will be removed in
     * Brave v6.
     */
    @Deprecated public boolean parseClientAddress(Req req, zipkin2.Endpoint.Builder builder) {
        return false;
    }

    /** @see HttpServerRequest#parseClientIpAndPort(Span) */
    public boolean parseClientIpAndPort(Req req, Span span) {
        return parseClientIpFromXForwardedFor(req, span);
    }

    /** @see HttpServerRequest#parseClientIpFromXForwardedFor(Span) */
    public boolean parseClientIpFromXForwardedFor(Req req, Span span) {
        String forwardedFor = requestHeader(req, "X-Forwarded-For");
        if (forwardedFor == null) return false;
        int indexOfComma = forwardedFor.indexOf(',');
        if (indexOfComma != -1) forwardedFor = forwardedFor.substring(0, indexOfComma);
        return span.remoteIpAndPort(forwardedFor, 0);
    }
}
